package org.convallaria.infrastruct.rg.example;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

/**
 * 示例Feign客户端
 * 演示如何使用Feign进行服务间调用
 * 
 * @author gjh
 * @since 2025-01-27
 */
@FeignClient(
        name = "convallaria-system-biz",  // 服务名称
        path = "/api/system",             // 服务路径
        fallback = ExampleFeignClientFallback.class
)
public interface ExampleFeignClient {
    
    /**
     * 获取系统信息
     * 
     * @return 系统信息
     */
    @GetMapping("/info")
    Map<String, Object> getSystemInfo();
    
    /**
     * 获取用户信息
     * 
     * @param userId 用户ID
     * @return 用户信息
     */
    @GetMapping("/user/{userId}")
    Map<String, Object> getUserInfo(@PathVariable("userId") String userId);
    
    /**
     * 健康检查
     * 
     * @return 健康状态
     */
    @GetMapping("/health")
    Map<String, Object> healthCheck();
    
    /**
     * 获取服务状态
     * 
     * @param serviceName 服务名称
     * @return 服务状态
     */
    @GetMapping("/status")
    Map<String, Object> getServiceStatus(@RequestParam("serviceName") String serviceName);
}
